home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / Registration / Registration.h < prev    next >
Text File  |  1992-12-19  |  4KB  |  125 lines

  1. /*
  2.  * (C) 1992 Simson Garfinkel and Associates, Inc.
  3.  *
  4.  * NeXTSTEP developers may freely use and redistribute this software as long
  5.  * as credit is given to Simson Garfinkel and Associates.
  6.  *
  7.  * EXPORT RESTRICTIONS:
  8.  *
  9.  * You may not ship the source-code module des.c outside of the US or canada.
  10.  *
  11.  * You may ship a program which uses the des.o compiled module outside of the
  12.  * United States to any type T or type V country as long as you do not provide
  13.  * cryptographic services to the user in your program and you clearly
  14.  * declare "commodity control number 5D11A" on your export declaration.
  15.  *
  16.  * Type T countries include all countries in the Western Hemisphere except Cuba.
  17.  * Type V countries include all countries in the Eastern Hemisphere except
  18.  * the previous communist block countries and the People's Republic of China,
  19.  * Vietnam, Cambodia, and Laos.
  20.  *
  21.  * For further information, contact the Office of Export Control:
  22.  *
  23.  *    Bureau of Export Administration
  24.  *    P.O. Box 273
  25.  *    Washington, DC 20044
  26.  *    202-377-2694
  27.  */
  28.  
  29. /****************************************************************
  30.   SGAI's Registration System
  31.  ****************************************************************/
  32.  
  33.  
  34. /* token a user might type */
  35. struct licenseString {
  36.     unsigned char    product;
  37.     unsigned char    num[3];        /* accession number */
  38.     unsigned char    start;        /* month in top half / year in bottom */
  39.     unsigned char     end;
  40.     unsigned char     maxMachines[2];
  41.     unsigned char     flag;
  42.     unsigned char     checksum;
  43. };
  44.  
  45. /* Product Codes */
  46. #define    SBOOK        1
  47. #define    EDITBENCH    2
  48. #define    SECURITY    3
  49. #define    REGGEN        4
  50.  
  51.  
  52. /* flags */
  53.  
  54. #define    REG_SINGLEUSER     0x0001        /* single user license */
  55. #define REG_DEMO    0x0002        /* demo license */
  56. #define REG_START    0x0004        /* look at start time */
  57. #define REG_END        0x0008        /* look at end time */
  58.  
  59. /* What we transmit on the network in UDP packets */
  60.  
  61. struct regNetToken {
  62.     char        version;
  63.     char        username[10];
  64.     char        person[64];    /* person full name who is using     */
  65.     struct      licenseString ls; /* that they are using with         */
  66.     int        session_number;    /* (hopefully) unique session number    */
  67.     unsigned char    time[4];    /* how long we have been running, in sec*/
  68.     char        command;    /* what we should do with this command     */
  69.     char        userData[256];    /* any other data             */
  70. };
  71.  
  72. /* commands */
  73.  
  74. #define    C_PING    1            /* generate a reply */
  75. #define    C_PRINT    2            /* print a message */
  76. #define C_PONG  3            /* reponse to a ping */
  77.  
  78. /* internal commands */
  79. #define C_DUPLICATE_SINGLE_USER    1000    /* duplicate single user on network */
  80. #define C_TOO_MANY_NETWORK    1001    /* too many network copies running  */
  81.  
  82. /* Tuneable parameters (you can tune a filesystem but you can't...) */
  83.  
  84. #define    RANDOM_SLEEP_TIME    5    /* how long to wait after a PING before a PONG */
  85. #define REG_WINDOW        5    /* for calculating if people started before us */
  86.  
  87. /* What we stamp into our binary.  Don't worry --- it's DES encrypted! */
  88. struct    registration_string {
  89.     unsigned long         guard1[2];
  90.     unsigned short         checksum;        /* validation */
  91.     struct licenseString    ls;             /* typed in */
  92.     long            ctime;
  93.     long            mtime;             /* time of inode */
  94.     char            owner[80];        /* name */
  95.     unsigned long         guard2[2];
  96. };
  97.  
  98. #define    SERIAL_GUARD_1    0x10709030
  99. #define    SERIAL_GUARD_2    0x80fe7020
  100.  
  101. #import <appkit/Application.h>
  102. @interface Application(Simson)
  103. - fatalError;
  104. - noisyFatalError;
  105. - showLicenseStatus;
  106. - showLicensePanel:sender;
  107. - showRegistrationPanel:sender;
  108. @end
  109.  
  110. /* RegSupport.m */
  111. char    *binary_to_hex(void *binary,int len,char *buf);
  112. void    *hex_to_binary(const char *buf,void *binary,int len);
  113. int    checksum(void *data,int len);
  114. int    checksum2(void *data,int len);
  115. void    asciiToKey(const char *ascii,char *key);
  116. char    *hostNumberToAscii(int address,char *buf);
  117. char    *hostName(int address,char *buf);
  118. int    lsNumUsers(struct licenseString *ls);
  119.   
  120. /* des.c */
  121. int    desinit(int);
  122. int    dessetkey(char kn[16][8],char *key);
  123. int    endes(char kn[16][8],void *data);
  124. int    dedes(char kn[16][8],void *data);
  125.